<?php

class AfiliadosController extends AppController {

    var $name = 'Afiliados';
    var $layout = "ajax";
    var $components = array('Interfaz', 'Vista',);
    var $helpers = array('Interfaz', 'Vista', 'Ayuda',);
    var $uses = array('Afiliado');

    public function beforeFilter() {
        $this->validar();
    }

    function index($busq = null) {
        $this->permisos_menu_individual('afiliados');
        $this->set('busq', $busq);
        $condiciones['Afiliado.id >'] = '0';
        $condiciones['Afiliado.estatus'] = 1;
        $filtros = '';
        if(!empty($this->request->data)){
            $filtros = $this->request->data;
            extract($filtros);
        }
        if(!empty($filtros) && isset($vent_filtro)){
            $this->set('opciones', $this->serializador($filtros, 2));
            if(!empty($ced_rif))
                $condiciones['Afiliado.ced_rif ILIKE'] = "%$ced_rif%";
            if(!empty($nombre))
                $condiciones['Afiliado.nombre ILIKE'] = "%$nombre%";
            if(!empty($estado_id))
                $condiciones['Afiliado.estado_id'] = $estado_id;
            if(!empty($municipio_id))
                $condiciones['Afiliado.municipio_id'] = $municipio_id;
            if(!empty($parroquia_id))
                $condiciones['Afiliado.parroquia_id'] = $parroquia_id;
            if(!empty($tipo))
                $condiciones['Afiliado.tipo'] = $tipo;
        }
        $data = $this->Afiliado->find('all', array('conditions' => $condiciones, 'order' => 'Afiliado.ced_rif', 'limit' => MAX_PAGI));
        $mostrar = (count($data) > MAX_PAGI) ? MAX_PAGI : count($data);
        $this->set('data', $data);
        $this->Vista->title("Listado de Afiliados Encontrados (Mostrando $mostrar de " . count($data) . " Registros Encontrados)");
        if(isset($vent_filtro))
            $this->Vista->cerrar_ventana($vent_filtro);
        //$this->log(1);
    }

    public function nuevo() {
        $this->permisos_accion_individual('afiliados', 'nuevo');
        $this->set('listaEstados', $this->Utilitario->lista_estados());
        $this->set('listaTipo', $this->listaTipo());
    }

    public function guardar() {
        $this->permisos_accion_individual('afiliados', 'nuevo');
        $data = $this->request->data;
        if (!$this->Vista->empyt($data, array('telf', 'telf_cel', 'direccion', ))) {
            extract($data);
            if (!$this->Vista->verifica('Afiliado', 'ced_rif', $ced_rif, 'ced_rif')) {
                $this->Afiliado->query('BEGIN WORK');
                $data['Afiliado']['ced_rif'] = $this->Interfaz->mayuscula($ced_rif);
                $data['Afiliado']['nombre'] = $this->Interfaz->mayuscula($nombre);
                $data['Afiliado']['tipo'] = $tipo;
                $data['Afiliado']['direccion'] = $this->Interfaz->mayuscula($direccion);
                if(!empty($telf))
                    $data['Afiliado']['telf'] = $telf;
                if(!empty($telf_cel))
                    $data['Afiliado']['telf_cel'] = $telf_cel;
                $data['Afiliado']['estado_id'] = $estado_id;
                $data['Afiliado']['municipio_id'] = $municipio_id;
                $data['Afiliado']['parroquia_id'] = $parroquia_id;

                if ($this->Afiliado->save($data)) {
                    $this->Afiliado->query('COMMIT');
                    $this->Vista->mensaje("Guardado Exitosamente", 'EXITO');
                    $this->Vista->cerrar_ventana($vent_nuevo);
                    //$this->log('imprimir');
                } else {
                    $this->Afiliado->query('ROLLBACK');
                    $this->Vista->mensaje("Ocurrio un error Guardando", 'ERROR', 'codigo');
                }
            } else
                $this->Vista->mensaje("Rif duplicado", 'ERROR');
        } else {
            $this->Vista->mensaje("Faltan campos requeridos", 'ERROR');
        }
        $this->index();
        $this->render('index');
    }

    public function modificar($id = null) {
        $this->permisos_opcion_individual('afiliados', 'estatus', 'modificar');
        $data = $this->request->data;
        if (!empty($data)) {
            if (!$this->Vista->empyt($data, array('telf', 'telf_cel', 'direccion', ))) {
                extract($data);
                $id = $this->Interfaz->id($id_afiliado);
                if (!$this->Vista->verifica('Afiliado', 'ced_rif', $ced_rif, 'ced_rif', $id)) {
                    $this->Afiliado->query('BEGIN WORK');
                    $data['Afiliado']['id'] = $id;
                    $data['Afiliado']['ced_rif'] = $this->Interfaz->mayuscula($ced_rif);
                    $data['Afiliado']['nombre'] = $this->Interfaz->mayuscula($nombre);
                    $data['Afiliado']['tipo'] = $tipo;
                    $data['Afiliado']['direccion'] = $this->Interfaz->mayuscula($direccion);
                    if(!empty($telf))
                        $data['Afiliado']['telf'] = $telf;
                    if(!empty($telf_cel))
                        $data['Afiliado']['telf_cel'] = $telf_cel;
                    $data['Afiliado']['estado_id'] = $estado_id;
                    $data['Afiliado']['municipio_id'] = $municipio_id;
                    $data['Afiliado']['parroquia_id'] = $parroquia_id;

                    if ($this->Afiliado->save($data)) {
                        $this->Afiliado->query('COMMIT');
                        $this->Vista->mensaje("Guardado Exitosamente", 'EXITO');
                        $this->Vista->cerrar_ventana($vent_nuevo);
                        //$this->log('imprimir');
                    } else {
                        $this->Afiliado->query('ROLLBACK');
                        $this->Vista->mensaje("Ocurrio un error Guardando", 'ERROR', 'codigo');
                    }
                } else
                    $this->Vista->mensaje("Rif duplicado", 'ERROR');
            } else
                $this->Vista->mensaje("Faltan campos requeridos", 'ERROR');
            $this->index();
            $this->render('index');
        } else {
            $id = $this->Interfaz->id($id);
            if (is_numeric($id)) {
                $resultado = $this->Afiliado->find('first', array('conditions' => array('Afiliado.id' => $id)));
                $this->set('listaEstados', $this->Utilitario->lista_estados());
                $this->set('listaMunicipios', $this->Utilitario->lista_municipios($resultado['Afiliado']['estado_id']));
                $this->set('listaParroquias', $this->Utilitario->lista_parroquias($resultado['Afiliado']['municipio_id']));
                $this->set('listaTipo', $this->listaTipo());
                $this->set('data', $resultado);
            } else {
                $this->Vista->mensaje("Afiliado Inv&aacute;lido", 'ERROR');
                $this->render("../" . PRINCIPAL . "/mensajes");
            }
        }
    }

    public function eliminar($id = null) {
        $this->permisos_opcion_individual('afiliados', 'estatus', 'eliminar');
        $id = $this->Interfaz->id($id);
        if (is_numeric($id)) {
            $total = $this->Afiliado->find('count', array('conditions' => array("Afiliado.estatus" => 2)));
            $this->Afiliado->query('BEGIN WORK');
            $data['Afiliado']['id'] = $id;
            $data['Afiliado']['ced_rif'] = ++$total;
            $data['Afiliado']['estatus'] = 0;
            if ($this->Afiliado->save($data)) {
                $this->Afiliado->query('COMMIT');
                $this->Vista->mensaje("Eliminado Exitosamente", 'EXITO');
                //$this->log('imprimir');
            } else {
                $this->Afiliado->query('ROLLBACK');
                $this->Vista->mensaje("Ocurrio un error Eliminando", 'ERROR');
            }
        } else {
            $this->Vista->mensaje("Afiliado Inv&aacute;lido", 'ERROR');
            $this->render("../" . PRINCIPAL . "/mensajes");
        }
        $this->index();
        $this->render('index');
    }
    
    public function filtro() {
        $this->permisos_accion_individual('afiliados', 'filtro');
        $this->set('listaEstados', $this->Utilitario->lista_estados());
        $this->set('listaTipo', $this->listaTipo());
    }
    
    public function reporte_excel($formato = 1, $b = 1, $busq = null){
        $condiciones['Afiliado.id >'] = '0';
        $condiciones['Afiliado.estatus'] = 1;
        $busq = (strpos($busq, 'menuadmin') === false) ? $busq : '';
        if(!empty($busq)){
            if($b == 2){
                $dataSerializada = $this->serializador($busq, 1); //1 convierte la cadena serializada en un arreglo
                if(is_array($dataSerializada)){
                    extract($dataSerializada);
                    if(!empty($ced_rif))
                        $condiciones['Afiliado.ced_rif ILIKE'] = "%$ced_rif%";
                    if(!empty($nombre))
                        $condiciones['Afiliado.nombre ILIKE'] = "%$nombre%";
                    if(!empty($estado_id))
                        $condiciones['Afiliado.estado_id'] = $estado_id;
                    if(!empty($municipio_id))
                        $condiciones['Afiliado.municipio_id'] = $municipio_id;
                    if(!empty($parroquia_id))
                        $condiciones['Afiliado.parroquia_id'] = $parroquia_id;
                    if(!empty($tipo))
                        $condiciones['Afiliado.tipo'] = $tipo;

                    $data = $this->Afiliado->find('all', array('conditions' => $condiciones, 'order' => 'Afiliado.ced_rif'));
                    $this->set('data', $data);
                }
            } else
		$this->_principal_buscador_reporte('Afiliado', $busq);
        } else {
            $data = $this->Afiliado->find('all', array('conditions' => $condiciones, 'order' => 'Afiliado.ced_rif'));
            $this->set('data', $data);
        }
        $this->set('formato', $formato);
    }
    
    public function validarCedRif($cedrif = null, $id = null) {
        if (isset($cedrif)) {
            if (isset($id)) {
                if (!is_numeric($id))
                    $id = $this->Interfaz->id($id);
                $this->Vista->verifica('Afiliado', 'ced_rif', $cedrif, 'ced_rif', $id);
            }
            else
                $this->Vista->verifica('Afiliado', 'ced_rif', $cedrif, 'ced_rif');
        }
        $this->render("../" . PRINCIPAL . "/mensajes");
    }

    function listaTipo() {
        $codigo[1] = 'Si';
        $codigo[2] = 'No';
        return $codigo;
    }

    public function buscarMunicipio($estado_id = null) {
        $this->set('listaMunicipios', $this->Utilitario->lista_municipios($estado_id));
    }

    public function buscarParroquia($municipio_id = null) {
        $this->set('listaParroquias', $this->Utilitario->lista_parroquias($municipio_id));
    }

}
